// 百度云人脸识别API调用

import request from '@/utils/request'

// 处理API错误的辅助函数
function handleApiError(error) {
  console.error('API请求错误:', error);
  
  // 检查是否是权限错误
  if (error && error.message && error.message.includes('No permission to access data')) {
    // 添加更友好的错误信息和详细的诊断建议
    const enhancedError = new Error('认证失败：无权限访问数据，请检查百度云API密钥配置或联系系统管理员');
    enhancedError.originalError = error;
    enhancedError.code = 'PERMISSION_DENIED';
    enhancedError.details = {
      possibleReasons: [
        '百度云API密钥配置错误',
        '密钥已过期',
        '网络连接问题',
        '百度云服务异常'
      ],
      suggestion: '请检查bootstrap.yml中的百度云API密钥配置是否正确，或联系系统管理员更新密钥'
    };
    return Promise.reject(enhancedError);
  }
  
  // 检查是否是网络错误
  if (error && error.message && (error.message.includes('Network Error') || error.message.includes('网络错误'))) {
    const networkError = new Error('网络连接失败，请检查网络连接后重试');
    networkError.originalError = error;
    networkError.code = 'NETWORK_ERROR';
    return Promise.reject(networkError);
  }
  
  // 检查是否是超时错误
  if (error && error.code === 'ECONNABORTED') {
    const timeoutError = new Error('请求超时，请检查网络连接后重试');
    timeoutError.originalError = error;
    timeoutError.code = 'TIMEOUT_ERROR';
    return Promise.reject(timeoutError);
  }
  
  // 其他错误保持不变，但添加更详细的错误信息
  const defaultError = new Error(error?.message || '操作失败，请重试');
  defaultError.originalError = error;
  defaultError.code = 'UNKNOWN_ERROR';
  return Promise.reject(defaultError);
}

// 获取百度云API访问Token
export function getAuthToken() {
  return request({
    url: '/driver/driverUser/face/getToken',
    method: 'get'
  }).catch(handleApiError)
}

// 人脸比对认证（使用Base64编码的图片）
// 人脸识别（仅图片）
export function recognize(formData) {
  return request({
    url: '/driver/driverUser/face/recognize',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  }).catch(handleApiError)
}

// 上传图片进行人脸识别认证
// 移除实名比对上传接口

// 司机实名认证接口
// 移除实名认证接口

// 人脸检测接口
export function faceDetect(formData) {
  return request({
    url: '/driver/driverUser/face/detect',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  }).catch(handleApiError)
}

// 人脸注册接口
export function faceRegister(formData) {
  return request({
    url: '/driver/driverUser/face/register',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  }).catch(handleApiError)
}

// 人脸对比接口
export function compare(formData) {
  return request({
    url: '/driver/driverUser/face/compare',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  }).catch(handleApiError)
}

// 上传身份证进行OCR识别
export function uploadIdCard(formData) {
  return request({
    url: '/driver/drivers/uploadIdCard',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  }).catch(handleApiError)
}

// 上传驾驶证进行OCR识别
export function uploadDrivingLicence(formData) {
  return request({
    url: '/driver/drivers/uploadDrivingLicence',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  }).catch(handleApiError)
}

// 上传行驶证进行OCR识别
export function uploadVehicleLicense(formData) {
  return request({
    url: '/driver/drivers/uploadVehicleLicense',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  }).catch(handleApiError)
}
